package recursion;

import java.io.File;

/**
 * 统计一个文件夹的大小
 * 借助一个核心方法File类中 long length()
 */
public class RecursionDemo04 {
    public static void main(String[] args) {
        File dir = new File("day21-file/abc");
        if (dir.exists()) {
            //指定的目录在硬盘上存在
            long totalSize = caculateSize(dir);
            System.out.println("目录的大小:" + totalSize + "字节");
        }else {
            //指定的目录在硬盘上不存在
            System.out.println("目录不存在" + dir);
        }
    }

    public static long  caculateSize(File dir){
        long totalSize = 0;
        if (dir.isFile()) {
            //如果传递过来的dir封装的是文件路径
            //那么直接返回该文件的大小
            return dir.length();
        }else{
            //传递过来的是文件夹
            //则遍历文件夹统计其中文件和文件夹的大小并累加
            File[] files = dir.listFiles();
            for (File file : files) {
                totalSize += caculateSize(file);
            }
        }
        return totalSize;
    }
}
